package com.slipper.common.dao;

import org.apache.ibatis.session.ResultHandler;

import java.util.List;
import java.util.Map;

public interface CommonDao {
    /**
     * 查询所有表信息
     */
    List<Map<String, Object>> queryTables();

    /**
     * 根据表名查询表的数量
     */
    int queryTotalByTableName(String tableName);

    /**
     * 查询表信息
     */
    Map<String, String> queryTable(String tableName);

    /**
     * 根据表名查询表字段
     */
    List<Map<String, Object>> queryColumns(String tableName);
    
    /**
     * 执行sql语句(一般用于建表操作)
     */
    int executeSql(String sql);

    /**
     * 新增
     * @param paramMap key为sql时，此内容为sql, 其它为sql #{}注入用到的参数
     */
    int execute(Map<String, Object> paramMap);

    /**
     * 查询列表
     * @param paramMap key为sql时，此内容为sql, 其它为sql #{}注入用到的参数
     */
    List<Map<String, Object>> queryList(Map<String, Object> paramMap);

    /**
     * 查询列表
     * @param paramMap key为sql时，此内容为sql, 其它为sql #{}注入用到的参数
     */
    List<Map<String, Object>> queryListWithHandler(Map<String, Object> paramMap, ResultHandler<?> handler);
    
    /**
     * 查询一条记录
     * @param paramMap key为sql时，此内容为sql, 其它为sql #{}注入用到的参数
     */
    Map<String, Object> queryOne(Map<String, Object> paramMap);
    
    /**
     * 查询总数
     * @param paramMap key为sql时，此内容为sql, 其它为sql #{}注入用到的参数
     */
    int queryTotal(Map<String, Object> paramMap);
}
